#ifndef DATASTRUCTURE_MAXHEAP_H
#define DATASTRUCTURE_MAXHEAP_H

typedef int MaxHeapElemType;

// 适合完全二叉树，顺序存储结构
typedef struct {
    // 存储堆元素的数组
    MaxHeapElemType *items;
    // 堆的当前元素个数
    int size;
    // 堆的最大容量
    int capacity;

} MaxHeap;

// 创建一个空的最大堆
MaxHeap *create(int maxSize);

// 判断最大堆是否已满
int isFull(MaxHeap *heap);

// 将元素插入到最大堆中
int insert(MaxHeap *heap, MaxHeapElemType item);

// 判断最大堆是为空
int isEmpty(MaxHeap *heap);

// 返回最大堆中最大的元素(高优先级)
MaxHeapElemType deleteMax(MaxHeap *heap);

void maxHeapTest();

#endif //DATASTRUCTURE_MAXHEAP_H
